RedisやMemoryDBをゲーム開発で活用するには #AWSreInvent
こんにちは。ゲームソリューション部の出村です。
AWS re:Invent 2023のセッションである「Building high-performance gaming applications with Redis」のレポートをお届けします。
概要
In this session, explore Redis data structures and the infrastructure prerequisites tailored for real-time gaming applications. These use cases encompass elements like leaderboards, in-game messaging, notifications, and more. To facilitate comprehension, see these concepts come to life with a practical example: a game you can actively engage in! By the end of this session, gain a comprehensive understanding of why Amazon MemoryDB for Redis is an ideal choice for handling high-performance gaming workloads.
スピーカー
- Roberto Luna Rojas : Sr Specialist SA, In-Memory DB, AWS
- Sashi Varanasi : WW Leader, Specialist SAs, In-Memoery DB and Web3, AWS
動画
内容について
ここでは、このセッションの内容について注目した箇所を中心に解説します。セッション全体は動画で視聴できますので、そちらをご覧下さい。
複数人が同時にプレイするようなリアルタイムのゲームであれば、1秒間数百万のリクエストがあったり、ミリ秒のレイテンシ、スケーラビリティなど様々な要求が課せられます。このあたりはゲームの宿命といってもいいでしょう。
本セッションの技術解説のため、あらかじめ開発されたクイズゲームを来場者にプレイしてもらいました。
まずはRedisの説明からです。Redisにあまり明るくない方向けに説明すると、Redisはキーバリューストアのソフトウェアです。世界で最も愛されているインメモリ データストアです。
Redisは多くのデータ型を扱えます。文字列、ビットマップ、ハッシュ、ストリーム、JSONなど豊富に扱えます。
Redisは次のような用途で利用されます。セッション情報の格納やリーダーズボード(ランキング)でRedisを扱ったことがある方も多いことでしょう。
そして先ほどのクイズゲームでもRedisが大いに利用されました。ここではリーダーズボードでの活用についてみてきます。今回のゲームでは常にリーダーズボードが設定されており、一週間単位でのリーダーズボードなど、さまざまなリーダーズボードが用意されてます。
そして、リーダーズボードで扱われるデータやコマンドが紹介されています。ソートが必要な機能ですのでRedisのZ***コマンドが利用されています。
次にNPCを生成AIを利用する方法の紹介がありました。従来のゲームのように、NPCは過去の出来事など決まったセリフを説明するだけではなく、ゲーム中に発生した出来事を元にしたセリフをしゃべるようにするため生成AIが用いられています。
アーキテクチャとしてMemoryDBにゲーム中に発生した出来事を記録しておき、その情報を元にしてBedrockがセリフを生成しています。その学習の結果をNPCがプレイヤーに対して話す、といった仕組みとなっています。
インメモリ データベースの使い分けはどのように判断するとよいのでしょうか。AWSではMemcached、Redis、MemoryDBが利用できます。これらの違いや使い分けをみていきます。
使い分け方としてはデータの持続性を考慮して選びます。Memcachedは一時的なデータ、MemoryDBは永続的なデータ、Redisはその中間のデータを保存する用途で利用するとよいと解説しています。
MemoryDBの主な機能の解説です。MemoryDBはRedisと同じように扱えますがRedisには無いさまざまな特徴があります。
高速にデータが読み書きができるほか、フルマネージドサービスである、SLAが99.99%である点など、Redisにはない特徴を数多く備えています。
MemoryDBの読み書きの性能についてみていきます。このスライドにあるように非常に高速に読み書きができる上に、スケールするようになっています。
最後に
Redisは以前より高速なインメモリデータベースとして利用されていました。ただ、メモリ容量の上限がRDSなどと比較して圧倒的に少なく、データを大量に扱おうとするとコストがかかるといった問題も抱えていました。
それらの悩みに対しては、MemoryDBを採用することで解決する場面もそれなりにあるでしょう。
大量のデータが保存できるインメモリデータベースをお探しなら、いちどMemoryDBを検討してみてはいかがでしょうか。